package cutin.sample.animation; import android.animation.Animator; import android.animation.AnimatorListenerAdapter; import android.animation.AnimatorSet; import android.animation.ObjectAnimator; import android.animation.ValueAnimator; import android.annotation.SuppressLint; import android.content.Intent; import android.view.LayoutInflater; import android.view.View; import android.view.animation.DecelerateInterpolator; import android.widget.ImageView; import com.garlicg.cutinlib.CutinService; import cutin.sample.R; public class AnimatorCutin extends CutinService{ private View mView; @Override protected View create() { LayoutInflater inflater = LayoutInflater.from(this); View layout = inflater.inflate(R.layout.cutin_default, null); mView = layout.findViewById(R.id.cutin_default_view); return layout; } @Override protected void destroy() { } @SuppressLint("NewApi") @Override protected void start(Intent arg0, int arg1, int arg2) { // in ValueAnimator rotateIn = ObjectAnimator.ofFloat(mView,ImageView.ROTATION,360f); rotateIn.setDuration(1000); DecelerateInterpolator di = new DecelerateInterpolator(); ValueAnimator scaleAnimX = ObjectAnimator.ofFloat(mView, ImageView.SCALE_X, 1.5f); scaleAnimX.setDuration(1000); scaleAnimX.setInterpolator(di); ValueAnimator scaleAnimY = ObjectAnimator.ofFloat(mView, ImageView.SCALE_Y, 1.5f); scaleAnimY.setDuration(1000); scaleAnimY.setInterpolator(di); // out ValueAnimator rotateOut = ObjectAnimator.ofFloat(mView,ImageView.ROTATION,0f); rotateOut.setDuration(1000); ValueAnimator fadeOut = ObjectAnimator.ofFloat(mView,ImageView.ALPHA,0.0f); fadeOut.setDuration(1000); AnimatorSet tornado = new AnimatorSet(); tornado.play(rotateIn).with(scaleAnimX); tornado.play(scaleAnimX).with(scaleAnimY); tornado.play(rotateOut).after(scaleAnimX); tornado.play(rotateOut).with(fadeOut); tornado.addListener(new AnimatorListenerAdapter() { @Override public void onAnimationEnd(Animator animation) { finishCutin(); } }); tornado.start(); } }